package com.jacksay.vikingfl.stringtools
{
	public class StringTools
	{
		
		/**
		 * Retourne obj formaté avec pattern, pattern est de forme
		 * %property1 %property2 %propertyN
		 */
		public static function renderObjectWithPattern( obj:Object, pattern:String ) :String {
			// Récupération des properties à trouver
			var regExp:RegExp = new RegExp("%([A-z0-9]*)","g");
			
			var propertyMatch:Array = pattern.match(regExp);
			if( propertyMatch == null ) return pattern;
			
			var i:int;
			var lng:int = propertyMatch.length;
			var re:RegExp;
			var subPattern:String;
			for( i=0; i<lng; i++ ){
				subPattern = propertyMatch[i];
				re = new RegExp(subPattern,'gi');
				pattern = pattern.replace(re, obj[subPattern.substr(1)]); 
			}
			return pattern;
		}
		
		
		/**
		 * Recherche dans searchIn la chaine match et retourne une chaine en 
		 * ajoutant prefix et suffix autour de la chaine qui 'match"
		 */
		public static function renderStringMatch( searchIn:String, match:String, sensitiveCase:Boolean=false, prefix:String='<b>', suffix:String='</b>' ) :String {
			var flags:String = 'g';
			if( !sensitiveCase ) flags = flags.concat('i');
			var regEx:RegExp = new RegExp(match, flags);
			return searchIn.replace(regEx, prefix +"$&" + suffix);
		} 

	}
}